<?php

namespace Hx\Db;


abstract class Base {

    /**
     * 数据库配置信息
     * @var array
     */
    protected $config;

    /**
     * 检测配置和驱动是否匹配
     * @param string $driver
     */
    abstract protected function checkDriver($driver);

    /**
     * 构造函数
     * 引入配置信息
     * @param array $config
     */
    public function __construct($config) {
        $this->checkDriver($config['driver']);
        $this->config = $config;
    }

    /**
     * 执行SQL操作
     * @param string $sql
     * @param array $param 绑定操作
     * @return $this
     */
    abstract public function exec($sql, $param = array());

    /**
     * 序列化数据
     * @param bool $all
     * @return mixed
     */
    abstract public function fetch($all = FALSE);

    /**
     * 最新添加的id
     * @return int
     */
    abstract public function lastId();

    /**
     * 操作影响行数
     * @return int
     */
    abstract public function rowCount();

    /**
     * 数据库字符串处理
     * @param string $string
     * @return string
     */
    abstract public function quote($string);

}